# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root: return 0
        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
    
if __name__ == '__main__':
    root = TreeNode(3)
    left1, right1 = TreeNode(9), TreeNode(20)
    left2, right2 = TreeNode(15), TreeNode(7)
    root.left, root.right = left1, right1
    right1.left, right1.right = left2, right2
    s = Solution()
    result = s.maxDepth(root)
    print(result)